x86/emul: Correct the decoding of vlddqu
authorAndrew Cooper <andrew.cooper3@citrix.com>
Mon, 27 Mar 2017 09:28:53 +0000 (09:28 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Wed, 29 Mar 2017 15:49:48 +0000 (16:49 +0100)
commit62cd2f6c887e1108be6c7950451527b3d1056da6
treeec47ba2ae2cd3f28f5167002d9ef5c6f764e302d
parent68a08e12c44435eb86600072b9e725e2387ce163
x86/emul: Correct the decoding of vlddqu

vlddqu is encoded with 0xf2 which causes it to fall into the Scalar general
case in x86_decode_twobyte().  However, it really does have just two operands,
so must remain TwoOp

AFL discovered that the instruction c5 5b f0 3c e5 95 0a cd 63 was considered
valid despite it being a two operand instruction and VEX.vvvv having the value
11.  The resulting use in a stub yielded #UD.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
xen/arch/x86/x86_emulate/x86_emulate.c